package com.evil.application.service;

import com.evil.common.application.dto.mq.RobotActionMQReqDTO;
import com.evil.common.application.dto.order.data.ControlDataDTO;
import com.evil.common.application.dto.robot.action.RobotActionReqDTO;
import org.springframework.validation.annotation.Validated;

import java.util.List;

/**
 * 机器人执行服务
 *
 * @author liyang
 * @date 2022-08-08 00:00
 */
public interface RobotActionService {

    /**
     * 执行机器人 （执行前日志记录）
     *
     * @param robotActionReqDTO robotActionReqDTO
     */
    List<ControlDataDTO> robotActionBeforeLog(@Validated RobotActionReqDTO robotActionReqDTO);

    /**
     * 执行机器人-判断处理队列方式
     *
     * @param robotActionMQReqDTO robotActionMQReqDTO
     */
    List<ControlDataDTO> robotActionMq(@Validated RobotActionMQReqDTO robotActionMQReqDTO);

    /**
     * 执行机器人 （事务补偿）
     *
     * @param robotActionReqDTO robotActionReqDTO
     */
    List<ControlDataDTO> robotActionErrorHandle(@Validated RobotActionReqDTO robotActionReqDTO);

    /**
     * 执行机器人
     *
     * @param robotActionReqDTO robotActionReqDTO
     */
    List<ControlDataDTO> robotAction(@Validated RobotActionReqDTO robotActionReqDTO);

    /**
     * 发起执行机器人队列
     *
     * @param robotActionMQReqDTO robotActionMQReqDTO
     */
    void convertAndSend(@Validated RobotActionMQReqDTO robotActionMQReqDTO);
}
